iT邦幫忙

2024 iThome 鐵人賽

DAY 24
0
Mobile Development

用Spring Boot架設後端結合Android前端建構智慧個人化推薦系統系列 第 24

Day24 資料分析與機器學習概念介紹:如何實施簡單的推薦算法

  • 分享至 

  • xImage
  •  

隨著數位時代的進步,推薦系統在我們的日常生活中扮演著越來越重要的角色。無論是音樂平台、電影串流服務,還是電子商務網站,推薦系統都能根據用戶的行為和喜好,提供個性化的推薦,提升用戶體驗。這篇文章將提供一個簡單的推薦算法實施示範,幫助你理解基本的推薦系統概念

簡單推薦算法的類型

推薦算法主要可以分為三種類型:

  • 基於內容的推薦:根據物品的特徵,向用戶推薦相似的物品。
  • 協同過濾推薦:根據其他用戶的喜好來推薦物品,分為用戶基於的協同過濾和物品基於的協同過濾。
  • 混合推薦:結合以上兩種或多種方法,以提高推薦的準確性。
    在這篇文章中,我們將專注於「用戶基於的協同過濾」方法,並提供一個簡單的實施示範。

資料準備

在開始之前,我們需要一些資料來訓練我們的推薦模型。假設我們有一個簡單的用戶-物品評分矩陣,如下所示

          物品A  物品B  物品C  物品D
用戶1      5      3      0      1
用戶2      4      0      0      1
用戶3      1      1      0      5
用戶4      0      0      5      4
用戶5      0      3      4      0

在這個矩陣中,行代表用戶,列代表物品,數字代表用戶對物品的評分,0表示未評分

實施推薦算法
步驟1:建立用戶相似度矩陣
使用餘弦相似度計算用戶之間的相似度。餘弦相似度的公式為:

[ \text{cosine_similarity}(A, B) = \frac{A \cdot B}{||A|| , ||B||} ]

在 Python 中可以使用 numpy 或 scikit-learn 來計算

import numpy as np
from sklearn.metrics.pairwise import cosine_similarity

# 建立評分矩陣
ratings = np.array([[5, 3, 0, 1],
                    [4, 0, 0, 1],
                    [1, 1, 0, 5],
                    [0, 0, 5, 4],
                    [0, 3, 4, 0]])

# 計算餘弦相似度
user_similarity = cosine_similarity(ratings)

print("用戶相似度矩陣:")
print(user_similarity)

步驟2:為目標用戶生成推薦
選定一名用戶,根據相似用戶的評分為其推薦物品。可以使用加權平均的方式來計算推薦分數

def get_recommendations(user_index, ratings, user_similarity, n_recommendations=3):
    weights = user_similarity[user_index]
    weighted_scores = ratings.T.dot(weights) / np.array([np.abs(weights).sum()])
    # 篩選未評分的物品並進行排序
    recommended_items = np.argsort(weighted_scores)[::-1]
    return [item for item in recommended_items if ratings[user_index, item] == 0][:n_recommendations]

# 為用戶1生成推薦
recommended_items = get_recommendations(0, ratings, user_similarity)
print("為用戶1推薦的物品:", recommended_items)

步驟3:評估推薦效果
評估推薦效果可以使用多種指標,如精確度、召回率等。這裡我們不會深入討論這個部分,但建議使用現實資料進行測試和驗證。

這邊介紹了一個簡單的用戶基於的協同過濾推薦算法的實施過程。我們從資料準備、相似度計算到推薦生成步驟進行了詳細說明。隨著資料科學和機器學習技術的發展,推薦算法變得越來越複雜,但這個基本的框架仍然是理解和實現推薦系統的基礎


上一篇
Day23 設計智慧個人化推薦系統架構:系統的整體結構與組件介紹
下一篇
Day25 Semantic Kernel的介紹
系列文
用Spring Boot架設後端結合Android前端建構智慧個人化推薦系統30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言